\cleardoublepage

\section{算法设计与训练流程}

本节将介绍本研究中用于训练人形机器人完成踢球任务的深度强化学习算法，以及相应的状态空间、动作空间、奖励函数与训练流程的具体设计。

\subsection{深度强化学习算法概述}

深度强化学习（Deep Reinforcement Learning, DRL）结合了强化学习的决策能力与
深度学习的表达能力，广泛应用于机器人控制、游戏智能、自动驾驶等领域\cite{zhang2020grasp}。
在经典强化学习框架中，智能体（agent）通过与环境交互，根据当前策略 $\pi$ 选择动作，旨在最大化期望的长期累计回报。
在每一个时间步 $t$，智能体会观察当前状态 $s_t$，并从策略分布 $\pi(a_t|s_t)$ 中采样一个动作 $a_t$。随后，该动作被执行，环境则返回一个新的状态 $s_{t+1}$ 和对应的标量奖励 $r_t$。智能体的最终目标是学习出一个最优策略 $\pi^*$，从而最大化其期望的折现累计回报：
\begin{equation}
J(\pi) = \mathbb{E}_{\tau \sim p(\tau | \pi)} \left[ \sum_{t=0}^{T} \gamma^t r_t \right],
\end{equation}


其中，$\tau$ 表示在策略 $\pi$ 下生成的一条轨迹，即 $\tau = (s_0, a_0, s_1, a_1, \dots, s_T)$，
其概率分布为 $p(\tau|\pi) = \rho_0(s_0) \prod_{t=0}^{T-1} \pi(a_t|s_t) , P(s_{t+1}|s_t, a_t)$，
其中 $\rho_0(s_0)$ 为初始状态分布，$P(s_{t+1}|s_t, a_t)$ 为环境的状态转移概率。
$T$ 表示轨迹的时间范围（即最大时间步数），$\gamma \in (0,1)$ 是折扣因子，用于控制未来奖励对当前决策的影响程度。


策略梯度（Policy Gradient, PG）算法是一类直接对策略函数进行优化的强化学习方法。与基于值函数的方法不同，策略梯度方法以参数化的策略函数 $\pi_\theta(a|s)$ 为优化对象，旨在最大化策略执行下的期望回报。
对目标函数$J(\pi)$求导的无偏梯度估计公式如下：

\begin{equation}
    \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a_t | s_t) \cdot R_t \right]
\end{equation}

其中，$R_t$ 表示从时刻 $t$ 开始的累计回报。尽管该方法在理论上是无偏的，但由于采样轨迹中存在较大的方差，实际训练中容易出现不稳定或收敛困难的问题。

为缓解上述问题，后续发展了多种改进算法，如引入状态值函数作为基准（baseline）的 Advantage Actor-Critic (A2C) 算法，以及进一步增强训练稳定性的近端策略优化（Proximal Policy Optimization, PPO）算法。



本研究采用基于策略梯度的近端策略优化（Proximal Policy Optimization，PPO）\cite{PPO} 算法进行运动策略的训练与优化。
PPO 属于 Actor-Critic 框架，其中 Actor 模块以策略函数 $\pi_\theta(a|s)$ 为核心，用于生成动作与环境交互；Critic 模块则以状态值函数 $V_\phi(s)$ 为核心，对当前策略下状态的价值进行估计，以辅助 Actor 的更新。

虽然传统的策略梯度方法具有无偏估计的理论优势，但由于基于轨迹采样的高方差特性，可能会导致训练过程不稳定、甚至无法收敛。PPO 引入了价值函数近似以降低方差，并使用信任区域思想控制每次策略更新的幅度，其典型目标函数为：

\begin{equation}
L^{\text{CLIP}}(\theta) = \mathbb{E}_t \left[ \min \left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon)\hat{A}_t \right) \right],
\end{equation}

其中 $r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)}$ 是新旧策略比值，$\hat{A}_t$ 是优势函数估计值，$\epsilon$ 是一个小的常数（如0.2），用于限制策略更新的步长。

PPO 算法兼具实现简洁、训练稳定与泛化能力强等优点，已被广泛应用于机器人路径规划、运动控制等领域。因此，本文基于 PPO 算法构建人形机器人踢球策略，为后续训练流程与性能优化奠定坚实的算法基础。
\subsection{网络结构设计}

本研究采用非对称策略结构（Asymmetric Actor-Critic）\cite{andrychowicz2020learning}用于训练强化学习策略，
其中Actor网络接收部分可观测信息作为输入，Critic网络则接收包含特权信息的完整观测。
通过引入额外的特权信息提升Critic训练效果，从而间接优化Actor策略。
Actor与Critic均采用多层感知机（MLP）作为基础网络结构，其中Actor网络的隐藏层尺寸为$[256,128,64]$，Critic网络的隐藏层尺寸为$[512,256,128]$。

此外，actor的设计参考了DreamWaq框架\cite{dreamwaq}中提出的编码机制。，网络中引入了隐向量编码器模块（Latent Feature Encoder），该模块包含显式估计分支（用于估计速度特征，维度为3）与隐式嵌入分支（用于建模潜在特征，维度为16），上述特征与原始观测拼接后共同输入至策略网络，用于生成动作。


\begin{figure}
    \centering
    \includegraphics[width=0.8\linewidth]{network.png}
    \caption{网络结构示意图}
    \label{fig:dreamwaq}
\end{figure}

\subsection{观测空间设计}
观测由两部分组成：标准观测（Standard Observation）与
特权观测（Privileged Observation）。
标准观测包含机器人当前的关节位置、速度、IMU信息等可由传感器直接获取的状态；
特权观测在训练过程中额外引入，包含身体速度、基础高度估计、足底高程图等信息，用于辅助Critic的训练。

\subsubsection{标准观测}
标准观测具体包括以下部分：

\begin{itemize}
    \item \textbf{IMU传感器数据}：包括三维角速度（3维）以及重力方向向量（3维）；
    \item \textbf{控制命令}：外部下发的运动目标命令，通常包括期望的速度或方向信息（3维）；
    \item \textbf{关节状态}：所有12个关节的角度（12维）与角速度（12维）；
    \item \textbf{历史动作}：上一个时间步执行的动作信息（12维），用于帮助策略建模时间依赖性；
    \item \textbf{步态参数}：描述当前步态周期状态的编码向量（4维），例如步态相位、周期等信息。
\end{itemize}

因此，整体观测向量维度为 $3 + 3 + 3 + 12 + 12 + 12 + 4 = 49$ 维，能够充分表达当前时刻机器人所处的运动与控制状态，为策略网络提供准确的输入依据。
此外，模型的输入还包括50帧的历史观测信息，以实现历史信息提取功能。

\subsubsection{特权观测}

特权观测信息仅在训练阶段对Critic网络可见，用于增强其对环境状态的建模能力，提升训练稳定性与策略性能。具体包括以下三类信息：

\begin{itemize}
    \item \textbf{身体速度}：机器人基座在世界坐标系下的线速度信息，共3维；
    \item \textbf{基座高度（Base Height）}：机器人基座相对于地面的高度，标量表示，共1维；
    \item \textbf{足底高程图（Foot Heightmap）}：每只脚下方提取$3\times3$的地形高度采样点，用于反映局部地形起伏情况。两只脚共$2\times9=18$维，覆盖约$1\,\text{m} \times 1.6\,\text{m}$范围。
\end{itemize}

上述信息通过拼接构成特权观测向量，共 $3 + 1 + 18 = 22$ 维。

\subsection{动作空间建模}

由于任务涉及精细动作控制，本文使用连续动作空间来控制机器人各自由度关节的目标位置。
具体而言，控制算法会输出一个12维的向量，其中每一维对应一个可控关节的位置，通过PD控制器实现位置控制。

\subsection{奖励函数设计}

\subsubsection{行走奖励设计}

在本文中，为了训练出稳定、协调且能良好跟随命令的人形机器人步行策略，我们设计了包含多个子项的复合奖励函数
，并参考了 Ilija Radosavovic 等人提出的行走奖励函数设计思路 \cite{radosavovic2024real}。该奖励函数涵盖了运动目标跟踪、稳定性控制、足底约束以及能量效率等多个方面，具体如下：

\paragraph{1) 线速度跟踪奖励}


该项用于鼓励机器人有效地跟踪期望的线速度命令，其形式为：

\begin{equation}
r_{\text{lin vel}} = \exp \left( - \frac{||\hat{v}_{xy} - v_{xy}||^2}{\sigma_v^2} \right),
\end{equation}

其中，$\hat{v}_{xy}$ 和 $v_{xy}$ 分别表示机器人实际的与期望的平面线速度，$\sigma_v$ 是人为设定的方差超参数，用于控制误差的惩罚强度。

\paragraph{2) 角速度跟踪奖励}

该项鼓励机器人朝向旋转与期望指令一致，定义如下：

\begin{equation}
r_{\text{ang vel}} = \exp \left( - \frac{||\hat{\omega}_z - \omega_z||^2}{\sigma_\omega^2} \right),
\end{equation}

其中，$\hat{\omega}_z$ 和 $\omega_z$ 分别表示实际与期望的绕 z 轴的角速度，$\sigma_\omega$ 为角速度的惩罚方差。

\paragraph{3) 基座姿态稳定性奖励}

为了提升机器人在行走过程中的整体姿态稳定性，我们综合考虑了当前基座姿态偏离程度与角速度的变化趋势，设计了如下两个子项：

\begin{itemize}
    \item \textbf{重力投影惩罚：} 用于衡量基座当前姿态偏离竖直方向的程度，定义为单位重力向量在 $x$-$y$ 平面上的投影模长：

    \begin{equation}
    r_{\text{gravity projection}} = \exp \left( - k_{g} \cdot ||g_{xy}|| \right),
    \end{equation}

    其中 $g_{xy} = (g_x, g_y)$ 表示单位重力向量在水平面上的分量，$k_g$ 为超参数，重力越偏离垂直方向，惩罚越大。

    \item \textbf{俯仰/横滚角速度惩罚：} 直接惩罚基座在俯仰和横滚方向上的角速度，避免快速转动导致姿态不稳：

    \begin{equation}
    r_{\text{base ang vel}} = \exp \left( - k_{\omega} \cdot ||\omega_{xy}|| \right),
    \end{equation}

    其中 $\omega_{xy} = (\omega_x, \omega_y)$ 表示基座在 $x$ 和 $y$ 轴上的角速度分量，$k_{\omega}$ 为加权因子。
\end{itemize}

最终基座稳定性奖励项为上述两项的加权组合：

\begin{equation}
r_{\text{base stability}} = w_1 \cdot r_{\text{gravity projection}} + w_2 \cdot r_{\text{base ang vel}},
\end{equation}

其中 $w_1$ 和 $w_2$ 分别为两项子奖励的权重。该设计能够有效约束基座的姿态偏移与角动趋势，提高整体行走稳定性。

\paragraph{4) 基座高度奖励}

该项用于避免机器人下蹲过低的姿态，通过惩罚基座高度和指定高度之间的平方差实现：

\begin{equation}
r_{\text{height}} = \exp \left( - k_h (h_{target} - h_{\text{base}})^2 \right),
\end{equation}

其中，$h_{\text{base}}$ 为当前基座高度，$h_{target}$ 是指定的基座高度，$k_h$ 为惩罚强度。

\paragraph{5) 悬空脚奖励}

为惩罚机器人在应悬空状态下足部仍与地面发生异常接触的情况，本文引入基于接触力的悬空脚惩罚机制。具体而言，当某只脚处于应悬空状态（即处于摆动期）时，若该脚的接触力显著不为零，则对其进行惩罚。该奖励项定义如下：

\begin{equation}
r_{\text{foot hang}} = - \left( w_{\text{lf}} \cdot \left\| F_{\text{lf}} \right\| + w_{\text{rf}} \cdot \left\| F_{\text{rf}} \right\| \right),
\end{equation}

其中，$F_{\text{lf}}$ 和 $F_{\text{rf}}$ 分别表示左脚和右脚的接触力，$w_{\text{lf}}$ 和 $w_{\text{rf}}$ 为人工设定的悬空脚权重，若该脚处于摆动状态，则对应权重取较大值，否则为零。该项奖励有效抑制了在摆动过程中足部的异常着地行为，增强了步态生成的物理合理性和动态稳定性。


\paragraph{6) 支撑脚滑动惩罚}

为确保机器人支撑期足部稳定接触地面，避免滑动造成的不稳定，本文对处于支撑状态的足部在地面上的滑动行为进行了惩罚。具体而言，通过惩罚支撑足端的线速度模长来抑制其地面滑移，奖励项定义如下：

\begin{equation}
r_{\text{foot slip}} = - \left( w_{\text{lf}} \cdot \left\| v_{\text{lf}} \right\| + w_{\text{rf}} \cdot \left\| v_{\text{rf}} \right\| \right),
\end{equation}

其中，$v_{\text{lf}}$ 和 $v_{\text{rf}}$ 分别表示左脚和右脚在支撑期的线速度，$w_{\text{lf}}$ 和 $w_{\text{rf}}$ 为人工设定的支撑脚权重，若某脚处于支撑状态，则对应权重为正，否则为零。该奖励项可以有效减少支撑足在接触期的滑动现象，增强机器人行走的稳定性和仿真物理的一致性。

\paragraph{7) 能量利用效率惩罚}

为了鼓励机器人以更高的能量效率完成移动任务，本文引入了基于运输成本（Cost of Transport, CoT）的能量效率惩罚项。该指标衡量单位重量和单位位移所需的能量消耗，定义如下：

\begin{equation}
r_{\text{energy}} = - \max\left( \frac{P}{m g \cdot \max\left(\|v_{\text{mean}}\|, v_{\text{min}}\right)} - c_0,\, 0 \right),
\end{equation}

其中，$P$ 表示单位时间内的平均功率消耗，由关节力矩与关节速度的乘积计算得到，$m$ 为机器人总质量，$g$ 为重力加速度，$v_{\text{mean}}$ 为机器人在一段时间窗内的平均线速度，$v_{\text{min}}$ 是设定的最小速度阈值以避免除零错误，$c_0$ 是经验设定的最小能耗基准值（如 0.4）。当机器人以较低效率移动时（即单位能耗过高），该项将产生惩罚。

该奖励项有效鼓励机器人在完成跟踪任务的同时，尽量减少能量浪费，提升整体运动的经济性与实用性。


\paragraph{8) 关节速度惩罚}

为了限制关节运动的剧烈程度并抑制不必要的能量浪费，本文引入了对关节速度的惩罚项。在训练中，若在较低速度指令下仍存在较大的关节运动幅度，则将产生更强的惩罚。该项定义如下：

\begin{equation}
r_{\text{joint vel}} = - \frac{\left\| \dot{q} \right\|}{\max\left( \left\| v_{\text{cmd}} \right\|,\, v_{\text{min}} \right)},
\end{equation}

其中，$\dot{q}$ 表示机器人的所有关节速度向量，$v_{\text{cmd}}$ 为期望的指令线速度，$v_{\text{min}}$ 是设定的最小速度阈值（如 $0.2\,\text{m/s}$）以避免除零错误。

\paragraph{9) 动作连续性惩罚}

避免策略输出出现剧烈的动作跳变，提升运动平滑性，定义如下：

\begin{equation}
r_{\text{action smooth}} = - ||a_t - a_{t-1}||^2,
\end{equation}

其中 $a_t$ 表示时间步 $t$ 的动作输出。

\vspace{0.5em}

综上所述，行走奖励函数整体以追踪性能为主，辅以稳定性、安全性和能效控制，联合优化后能引导机器人学得稳定且目标明确的运动策略。整体总奖励函数为各子项加权组合：

\begin{equation}
r = \sum_{i=1}^{9} w_i r_i,
\end{equation}

其中 $w_i$ 为各子奖励的加权系数，根据训练经验进行调优。

\paragraph{10) 足底力变化惩罚}

为进一步提升机器人在行走过程中的接触稳定性，本文设计了基于足底接触力变化的惩罚项。该项用于抑制足部接触力的剧烈波动，避免因接触瞬间冲击过大而导致的不稳定或不自然行为。奖励项定义如下：

\begin{equation}
r_{\text{contact force}} = - \frac{ \left\| \left\| F_t \right\| - \left\| F_{t-1} \right\| \right\| }{mg},
\end{equation}

其中，$F_t$ 和 $F_{t-1}$ 分别为当前和上一个时间步的足底接触力，$m$ 为机器人总质量，$g$ 为重力加速度。该项对接触力变化进行了归一化处理，从而保证了训练的数值稳定性。

\paragraph{11) 髋关节转动惩罚}

为了限制髋关节在绕竖直轴（z轴）方向上的过度旋转，本文引入了髋关节转动惩罚项。该项旨在提高步态的稳定性和一致性，防止髋关节因过大偏转而造成不稳定或非自然动作。其定义如下：

\begin{equation}
r_{\text{hip yaw}} = - \left\| q_{\text{hip yaw}} \right\|,
\end{equation}

其中，$q_{\text{hip yaw}}$ 表示所有髋关节绕 z 轴（即水平面法向轴）的当前角度。该项直接对髋关节的偏转量进行惩罚，有助于保持身体的朝向稳定与整体对称性。

\paragraph{12) 双脚距离惩罚}

为了保证步态不会出现“内八”的状态，防止双脚在运动过程中因收拢或跨距过大而导致的不稳定，本文引入了两脚横向距离惩罚项。该项在机器人的机体参考系下计算双脚在 $y$ 方向的投影距离，定义如下：

\begin{equation}
r_{\text{foot distance}} = - \left| y_{\text{left}} - y_{\text{right}} \right|,
\end{equation}

其中，$y_{\text{left}}$ 和 $y_{\text{right}}$ 分别为在机体坐标系中左脚和右脚在 $y$ 轴（横向）方向上的坐标位置。为获得机体参考系下的坐标，首先对地面坐标下的足底位置进行旋转修正，使其相对于当前机体朝向。

该项能够有效避免训练过程中出现双脚相互靠近甚至交叉的异常行为，提升机器人的步态对称性与物理合理性。

\subsubsection{踢球奖励设计}

在踢球任务中，智能体不仅需完成基本的稳定行走，还需具备良好的运动规划能力与环境交互能力。为此，本文在延续行走奖励函数（姿态稳定性、关节速度惩罚、动作连续性惩罚）基础上，进一步设计了面向任务目标的专用奖励项（如得分、靠近球体、姿态合法性等），以引导策略在保持稳定性的同时，实现目标导向的技能迁移与泛化。


\paragraph{1) 得分奖励}

当智能体成功将球踢入对方球门时给予奖励，鼓励智能体学习射门行为。该奖励项为：

\begin{equation}
r_{\text{score}} =
\begin{cases}
+1, & \text{若进球成功} \\
0, & \text{否则}
\end{cases}
\end{equation}

\paragraph{2) 朝向球的速度奖励}

为了鼓励智能体以高效姿态接近球体，对其朝向球的速度进行奖励：

\begin{equation}
r_{\text{vel-to-ball}} = \lambda_1 \cdot \left\| \vec{v}_{\text{agent}} \cdot \hat{d}_{\text{ball}} \right\|
\end{equation}

其中，$\vec{v}_{\text{agent}}$ 为智能体的线速度向量，$\hat{d}_{\text{ball}}$ 为指向球的单位方向向量，$\lambda_1$ 为缩放因子。

\paragraph{3) 自身前进速度奖励}

鼓励智能体持续向前移动，保持进攻节奏：

\begin{equation}
r_{\text{velocity}} = \lambda_2 \cdot \left\| \vec{v}_{\text{agent, forward}} \right\|
\end{equation}

其中 $\vec{v}_{\text{agent, forward}}$ 表示沿着机体前进方向的速度分量。


上述奖励函数从任务完成度、行为效率与行为合法性三方面共同指导策略学习，为实现稳健且具备目标导向的踢球行为提供了有效的激励机制。

\subsection{实现细节与优化措施}
\subsubsection{域随机化}

为进一步提升策略在现实环境中的可迁移性，本文在训练阶段引入了域随机化。通过在仿真中引入一定范围的物理参数扰动，用于模拟现实中由于硬件磨损、电池电量波动、传感器误差等引起的动力学变化，旨在缩小“仿真-现实差距”，提升策略在不同环境下的泛化与鲁棒性。
具体而言，我们仅对少数关键轴向进行扰动，以避免过度随机化导致策略过于保守、影响整体性能。
具体包括以下几个方面：

\begin{itemize}
    \item \textbf{摩擦系数随机化}：设置摩擦系数范围为 $[0.2, 1.25]$，使策略能够适应不同地面材质带来的摩擦变化。
    
    \item \textbf{基座质量随机化}：在原有质量基础上添加扰动，质量变化范围为 $[-0.1, 1.5]$\,kg，以提升策略在不同负载条件下的鲁棒性。
    
    \item \textbf{质心位置扰动}：将机器人质心位置在 $[-0.05, 0.05]$\,m 范围内随机偏移，增强对结构不对称或装配误差的容忍度。
    
    \item \textbf{电机能力扰动}：将电机输出力矩乘上 $[0.8, 1.2]$ 区间内的扰动系数，模拟电机性能波动情况。
    
    \item \textbf{控制增益扰动}：对控制器的比例增益（$K_p$）和微分增益（$K_d$）进行扰动，范围分别为 $[0.5, 1.1]$，提升策略对控制器参数漂移的适应性。
    
    \item \textbf{随机滞后步数}：模拟通信或执行滞后，随机延迟控制信号的时间步数（最多5ms），提高策略对系统响应延迟的容错能力。
    
    \item \textbf{初始状态扰动}：训练过程中以随机初始姿态进行初始化，增强策略的稳态恢复能力。
\end{itemize}